return err;
}
+ /* FIXME zero out page -- domain builder should probably do this*/
+ memset((void *)xen_start_info.store_page, 0, PAGE_SIZE);
+
*out = (void *)xen_start_info.store_page;
*in = (void *)xen_start_info.store_page + PAGE_SIZE/2;
return 0;
return info.dev;
}
+
+static void xenbus_release_device(struct device *dev)
+{
+ if (dev) {
+ struct xenbus_device *xendev = to_xenbus_device(dev);
+
+ kfree(xendev->subtype);
+ kfree(xendev);
+ }
+}
/* devices/<typename>/<name> */
static int xenbus_probe_device(const char *dirpath, const char *devicetype,
const char *name)
/* FIXME: look for "subtype" field. */
snprintf(xendev->dev.bus_id, BUS_ID_SIZE, "%s-%s", devicetype, name);
xendev->dev.bus = &xenbus_type;
+ xendev->dev.release = xenbus_release_device;
/* Register with generic device framework. */
err = device_register(&xendev->dev);